package com.demo.java.OD601_650.OD621;

import java.util.Scanner;
import java.util.*;
import java.util.stream.Collectors;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【模拟商场优惠打折(A卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146883604
 */
public class OdMain {
    public static void main(String[] args) {
        //处理输入
        Scanner in = new Scanner(System.in);
        List<Integer> params = Arrays.stream(in.nextLine().split(" "))
                .map(Integer::parseInt)
                .collect(Collectors.toList());
        int m = params.get(0); // 满减券数量
        int n = params.get(1); // 打折券数量
        int k = params.get(2); // 无门槛优惠券数量

        int x = Integer.parseInt(in.nextLine()); // 商品价格

        while (in.hasNext()) {
            int price = Integer.parseInt(in.nextLine());

            int[][] result = new int[4][2]; // 记录每种优惠方式的最终价格和优惠券使用数量
            result[0] = mode_a(price, m, n); // 先满减再打折
            result[1] = mode_b(price, m, n); // 先打折再满减
            result[2] = mode_c(price, m, k); // 先满减再无门槛
            result[3] = mode_d(price, n, k); // 先打折再无门槛

            // 按照价格降序，若价格相同则按优惠券使用数量降序排序
            Arrays.sort(result, (int[] a, int[] b) -> {
                if (a[0] != b[0]) {
                    return a[0] - b[0]; // 价格降序
                } else {
                    return a[1] - b[1]; // 优惠券使用数量升序
                }
            });

            System.out.print(result[0][0]); // 输出最低价格
            System.out.print(" ");
            System.out.println(result[0][1]); // 输出使用的优惠券数量
        }
    }

    // 先满减后打折
    public static int[] mode_a(int price, int m, int n) {
        int count = 0;
        while (m > 0) {
            if (price < 100) break;
            price -= (price / 100 * 10); // 满减10%
            count += 1;
            m--;
        }
        if (n > 0) {
            price *= 0.92; // 打折
            count += 1;
        }
        return new int[]{price, count};
    }

    // 先打折后满减
    public static int[] mode_b(int price, int m, int n) {
        int count = 0;
        if (n > 0) {
            price *= 0.92; // 打折
            count += 1;
        }
        while (m > 0) {
            if (price < 100) break;
            price -= (price / 100 * 10); // 满减10%
            count += 1;
            m--;
        }
        return new int[]{price, count};
    }

    // 先满减后无门槛
    public static int[] mode_c(int price, int m, int k) {
        int count = 0;
        while (m > 0) {
            if (price < 100) break;
            price -= (price / 100 * 10); // 满减10%
            count += 1;
            m--;
        }
        for (int i = 0; i < k; i++) {
            price -= 5; // 无门槛优惠5元
            count += 1;
            if (price <= 0) {
                price = 0;
                break;
            }
        }
        return new int[]{price, count};
    }

    // 先打折后无门槛
    public static int[] mode_d(int price, int n, int k) {
        int count = 0;
        if (n > 0) {
            price *= 0.92; // 打折
            count += 1;
        }
        for (int i = 0; i < k; i++) {
            price -= 5; // 无门槛优惠5元
            count += 1;
            if (price <= 0) {
                price = 0;
                break;
            }
        }
        return new int[]{price, count};
    }
}